/**
 * 1. 高阶函数
 *   如果一个函数负荷下面两个规范中的任何一个,那么该函数就是高阶函数
 *    - 若A函数,接收的参数是一个函数,那么就可以称之为高阶函数
 *    - 若A函数,调用的返回值已然是一个函数,那么就称为A为高阶函数
 *    - 常见的告诫函数有: Promise setTimeout  arr.map arr.filter
 * 2. 函数的柯里化
 *   通过函数调用接续返回函数的方式,实现多次接收参数,最后统一处理的函数编码形式
 */
class Person extends React.Component{
	submitHandler=(event)=>{
		event.preventDefault();
		console.log(this.state)

	}
	saveForm=(dataType)=>{
     return (event)=>{
			this.setState({[dataType]:event.target.value});
		 }
	}
	saveForm2=(dataType,event)=>{
		this.setState({[dataType]:event.target.value});
	}
	state = {
		username: "",
		password: "",
		code:""
	}
	render(){
		return (
			<form onSubmit={this.submitHandler}>
				用户名: <input type="text" onChange={this.saveForm('username')} name="username"/><br/>
				密&nbsp;&nbsp;码: <input type="password" onChange={this.saveForm('password')} name="password"/><br/>
				验证码: <input type="text" onChange={event=>this.saveForm2('code',event)} name="code"/><br/>
				<button>提交</button>
			</form>
		)
	}
}
ReactDOM.render(<Person />,document.getElementById("test"));
